package servidor;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * 
 */

import Protocolo.ConexionServidor;
import Protocolo.ConexionServidorACliente;
import Protocolo.ObservarProtocolo;
import java.util.ArrayList;


public class Servidor extends Thread implements ObservarProtocolo
{

private ListaUsuarios usuarios= new ListaUsuarios();
private ConexionServidor conexion;
private ArrayList<ConexionServidorACliente> lista;

public Servidor(ConexionServidor cs){
    conexion = cs;
}

    @Override
public void run(){
    try{
        lista= new ArrayList<ConexionServidorACliente>();
//       aceptarUsuario(csac);

        while(true){

            ConexionServidorACliente csac = conexion.recibirConexion();
            csac.agregarObservador(this);
            lista.add(csac);
            



        }
    }
    catch(Exception e){
        e.printStackTrace();
    }
}

    
    public void aceptarUsuario(ConexionServidorACliente conexionSC){
       Usuario u;
        if(!usuarios.verificaNombre(conexionSC.getNombre()))
            usuarios.getLista().add(u= new Usuario(conexionSC));
            System.out.println("Conexion recibida");
        }
        
    public void recibirMensaje(String usuario,String mensaje){
        System.out.println(usuario+ " dice: "+mensaje);
//           usuarios.recorrerLista(usuario, mensaje);

           for (ConexionServidorACliente csac: lista) {
               System.out.print("aqui es");
            csac.enviarMensaje(usuario+": "+mensaje);

        }
           Log n= new Log();
           n.guardarMensaje(usuario+": "+mensaje);
    }



    
//    public ArrayList  mandarListaUsuario()
//    {
//         return usuarios.getLista();
//    }
    public void enviarListaUsuarios(){
        for (int i = 0; i < usuarios.getLista().size(); i++) {
            usuarios.getLista().get(i).getS().enviarLista(usuarios.getLista().get(i).getNombre());
        }


    }
}